MongoDB তে শার্ডিং একটি প্রযুক্তি যা ডেটা একটি একক সার্ভারের মধ্যে সীমাবদ্ধ না রেখে একাধিক সার্ভারে বিতরণ করার মাধ্যমে স্কেলেবিলিটি এবং পারফরম্যান্স নিশ্চিত করে। MongoDB শার্ডিংয়ের মাধ্যমে ডেটার বড় পরিসরের কার্যক্রমকে আরও দ্রুত এবং কার্যকরভাবে পরিচালনা করতে সক্ষম হয়।
শার্ডিংয়ের মূল উপাদান হল Shard Key, যা ডেটা শার্ডে বিভক্ত করতে ব্যবহৃত হয়।
1. Shard Key
Shard Key হল MongoDB তে সেই ফিল্ড বা ফিল্ডের সংমিশ্রণ যা ডেটার বিভাজন এবং শার্ডিংয়ের জন্য ব্যবহৃত হয়। MongoDB এর শার্ডিং ফিচারটি শার্ড কী দ্বারা পরিচালিত হয়, এবং এটি ডেটাকে একাধিক শার্ড (অথবা সার্ভারে) ভাগ করে রাখে।
Shard Key নির্বাচন করার মাধ্যমে MongoDB ডেটার মধ্যে ব্যালান্স তৈরি করতে এবং শার্ডিং প্রক্রিয়াকে দ্রুততর এবং আরও কার্যকরী করে তোলে।
- Shard Key নির্বাচন: শার্ড কী এমন একটি ফিল্ড হওয়া উচিত যার মান সাধারণত বেশ পরিমাণে ভিন্ন হবে, যাতে ডেটার সমানভাবে বিতরণ সম্ভব হয়।
- Shard Key MongoDB তে ইনডেক্স করা থাকে, যা পারফরম্যান্স উন্নত করতে সাহায্য করে।
MongoDB তে Shard Key দুইটি প্রকারে হতে পারে:
1.1. Single Field Shard Key
একটি ফিল্ডের মানের ভিত্তিতে ডেটা শার্ডে ভাগ করা হয়। উদাহরণস্বরূপ, আপনি যদি age ফিল্ডকে শার্ড কী হিসেবে ব্যবহার করেন, তবে MongoDB ডেটাকে age ফিল্ডের মান অনুযায়ী ভাগ করে রাখবে।
db.collection.createIndex({ age: 1 });
db.collection.shardCollection("mydb.users", { age: 1 });
1.2. Compound Shard Key
একাধিক ফিল্ডের সংমিশ্রণ ব্যবহার করে ডেটাকে ভাগ করা হয়। এটি তখন ব্যবহার করা হয় যখন আপনি একটি একক ফিল্ডের উপর ডেটা সমানভাবে ভাগ করতে সক্ষম নন। উদাহরণস্বরূপ, আপনি যদি age এবং location দুটি ফিল্ড একসাথে শার্ড কী হিসেবে ব্যবহার করেন, MongoDB ডেটা উভয় ফিল্ডের মান অনুসারে শার্ডে ভাগ করবে।
db.collection.createIndex({ age: 1, location: 1 });
db.collection.shardCollection("mydb.users", { age: 1, location: 1 });
2. Data Distribution in Sharded Cluster
MongoDB শার্ডিংয়ে ডেটা একটি শার্ড ক্লাস্টারে বিতরণ হয়। শার্ডিংয়ের মাধ্যমে MongoDB ডেটাকে কীভাবে বিভক্ত এবং বিতরণ করে তা বুঝতে হলে প্রথমে জানতে হবে ডেটা কীভাবে ভাগ করা হয় এবং শার্ড কী কী ভূমিকা পালন করে।
2.1. Shards
MongoDB ক্লাস্টারের মধ্যে একাধিক শার্ড থাকে, যেখানে ডেটা শার্ড করা হয়। প্রতিটি শার্ড MongoDB সার্ভার হতে পারে যা ডেটা স্টোর করে। শার্ডগুলি স্বাধীনভাবে কাজ করে এবং ডেটার স্টোরেজ এবং প্রসেসিংয়ের কাজ করে।
2.2. Config Servers
Config servers MongoDB শার্ড ক্লাস্টারে মেটাডেটা এবং শার্ডিং কনফিগারেশন তথ্য সংরক্ষণ করে। এটি ডেটা কোথায় সংরক্ষিত আছে এবং কীভাবে ডেটা শার্ড করা হবে সে সম্পর্কে তথ্য রাখে।
- Config Servers MongoDB এর শার্ডিং পদ্ধতি পরিচালনা করে এবং মেটাডেটার মাধ্যমে ডেটা শার্ডের অবস্থান জানায়।
2.3. Query Routers (mongos)
Query Routers (mongos) হল MongoDB ক্লাস্টারের উপাদান যা ক্লায়েন্ট অ্যাপ্লিকেশন এবং শার্ড ক্লাস্টারের মধ্যে যোগাযোগ স্থাপন করে। এটি ডেটার শার্ডের অবস্থান নির্ধারণ করে এবং সঠিক শার্ডে কুয়েরি রিডাইরেক্ট করে।
- mongos ডেটার শার্ডের অবস্থান জানিয়ে ডেটাকে সঠিক শার্ডে রিডাইরেক্ট করে।
3. Shard Key এর নির্বাচন কিভাবে করবেন
শার্ড কী নির্বাচন একটি গুরুত্বপূর্ণ সিদ্ধান্ত, কারণ এটি MongoDB এর পারফরম্যান্স এবং স্কেলেবিলিটিকে প্রভাবিত করে। সঠিক শার্ড কী নির্বাচন করা হলে MongoDB খুব সহজেই বড় পরিসরে ডেটা পরিচালনা করতে সক্ষম হয়।
Shard Key নির্বাচন করার জন্য কিছু পরামর্শ:
- প্রচুর ভিন্ন মান: শার্ড কী এমন হতে হবে যার মান অনেক ভিন্ন থাকে, যাতে ডেটা সমানভাবে শার্ডে বিতরণ হয়।
- লোড ভারসাম্য: শার্ড কী এমন হতে হবে যা ভারসাম্যপূর্ণ লোড তৈরি করবে। অর্থাৎ, ডেটার প্রায় অর্ধেক অংশ এক শার্ডে যেতে না পারে।
- লিখন এবং পড়া কার্যক্রম: শার্ড কী নির্বাচন করতে হবে যা পড়া এবং লেখার কার্যক্রমে ভারসাম্য রাখতে সাহায্য করে। একে প্রচুর পাঠ এবং লেখার জন্য ব্যবহৃত শার্ড কী হিসেবে নির্বাচন করা উচিৎ।
4. Sharding-এ কিছু সাধারণ সমস্যা
MongoDB তে শার্ডিং ব্যবহারের কিছু সাধারণ সমস্যা রয়েছে, যেমন:
- Hot Spotting: যদি শার্ড কী নির্বাচন এমনভাবে করা হয় যে কিছু শার্ডে খুব বেশি ডেটা চলে আসে, তবে কিছু শার্ডে অতিরিক্ত লোড পড়বে। এটি পারফরম্যান্স কমিয়ে দেয়।
- একমাত্রিক শার্ড কী নির্বাচন: শুধুমাত্র একটি ফিল্ডের ভিত্তিতে শার্ডিং ডেটা অনুকূলভাবে বিতরণ না হতে পারে, বিশেষত যখন ফিল্ডে কম ভিন্নতা থাকে।
এটি এড়ানোর জন্য Compound Shard Key ব্যবহার করা যেতে পারে।
সারাংশ
MongoDB তে শার্ডিং একটি গুরুত্বপূর্ণ প্রযুক্তি যা ডেটার বড় পরিসরকে স্কেল করতে সহায়তা করে। Shard Key হল সেই ফিল্ড বা ফিল্ডের সংমিশ্রণ যা ডেটাকে শার্ডে ভাগ করার জন্য ব্যবহৃত হয়। Data Distribution এর মাধ্যমে MongoDB ডেটা একাধিক শার্ডে সমানভাবে বিতরণ করে এবং Config Servers এবং Query Routers এর মাধ্যমে শার্ড ক্লাস্টার পরিচালনা করা হয়। শার্ড কী সঠিকভাবে নির্বাচন করা MongoDB এর পারফরম্যান্স এবং স্কেলেবিলিটির জন্য অত্যন্ত গুরুত্বপূর্ণ।
Read more